Future Directions
The application binary interface standards will continue to evolve
over time to accommodate new technology.
Future evolution will increase the capabilities defined in
the ABI specifications and will
increase the standard development environment provided for application
writers and ISVs.
This section describes MIPS ABI vendor company directions
for some of the issues to be addressed in future
revisions of this specification.
Asynchronous I/O
The MIPS ABI group plans to follow the additional specifications to
ISO/IEC 9945-1, known as P1003.4 with respect to asynchronous I/O,
once the official standard
has been ratified by the IEEE. It is expected that the approved version
will be very close to the Draft 14 version. For planning and advanced
development purposes, Draft 14 defines the interfaces in the following
figure.
These interfaces are also planned for inclusion in future versions
of gABI.
Application developers are strongly cautioned that these interfaces
are not yet an approved part of the ABI and may not be supported on
all vendor platforms.
Header File: aio.h
typedef struct aiocb {
int aio_fildes; /* file descriptor to perform aio on */
off_t aio_offset; /* file offset position */
volatile void *aio_buf;
size_t aio_nbytes;
int aio_reqprio; /* aio priority, larger values lowers pri */
sigevent_t aio_sigevent;/* signal to be generated on completion */
int aio_lio_opcode; /* opcode for lio_listio() call */
/* SGI defined */
size_t aio_nobytes; /* return bytes */
int aio_whence; /* for seeking */
int aio_errno; /* return error from this aio op */
int aio_ret; /* returned status */
} aiocb_t;
/* for aio_cancel() return values */
#define AIO_CANCELED 1 /* cancelled operation */
#define AIO_NOTCANCELED 2 /* some ops not cancelled */
#define AIO_ALLDONE 3 /* all aio has completed */
/* for aiocb.aio_lio_opcode */
#define LIO_READ 1
#define LIO_WRITE 2
#define LIO_NOP 3
/* for lio_listio mode flag */
#define LIO_WAIT 1
#define LIO_NOWAIT 2
extern int aio_read(struct aiocb *);
extern int aio_write(struct aiocb *);
extern int lio_listio(int, struct aiocb *[], int, sigevent_t *);
extern int aio_cancel(int, struct aiocb *);
extern int aio_error(struct aiocb *);
extern ssize_t aio_return(struct aiocb *);
extern int aio_suspend(const struct aiocb *[], int, timespec_t *);
extern int aio_fsync(int, struct aiocb *);
Magnetic Tape ioctl
Compatibility
The MIPS ABI group plans to specify binary compatibility for common
operations on magnetic tape via the ioctl
system call. This would
enable programs to manipulate the tape using binary compatible calls.
Generally, these functions are defined by the existing tape ioctls
,
but different vendors have interpreted them in different ways. By defining
MIPS ABI interfaces, the vendor can maintain binary compatiblity with
their prior releases and add support for consistant ABI behavior.
Development Environment
The MIPS ABI group plans to specify commands and arguments for invocation
of the C compiler and loader as part of a future revision to this
document. This will facilitate porting, and will make end user linking
more standardized.
Expanded Global Offset Table (GOT)
The current definition of the Global Offset Table limits an object to
16K external references. This has proven to be an inconvenience for
applications with very large libraries or other situations with large
numbers of external symbols. In future revisions of this document and
the psABI, the MIPS ABI group intends to specify extensions to the GOT
to permit more references.
Initialization and Finalization Ordering
Some applications require specific ordering of the invocation of the
module initialization and finalization to achieve proper behavior of
complex multi-module systems. The MIPS ABI group intends to investigate
this requirement and propose mechanisms to fulfill it as part of future
revisions to the this document and the psABI.
Enhancements to dlopen
To simplify the task of managing extremely complex dynamically configured
programs, enhancements to the dlopen library call are being considered.
These would automatically bring in libraries upon which the library specified
in the dlopen depends. This is an area under investigation, and may not
be incorporated into future revisions of the MIPS ABI.
Back to the Table of Contents
Back to the MIPS ABI Home Page
Maintained by webmaster@mipsabi.org
last modified on August 17, 1995
Copyright © 1995, MIPS ABI Group, Incorporated.